// @File  : mysql.go
// @Author: JunLong.Liao&此处不应有BUG!
// @Date  : 2021/5/28
// @slogan: 又是不想写代码的一天，神兽保佑，代码无BUG！
//         ┏┓      ┏┓
//        ┏┛┻━━━━━━┛┻┓
//        ┃     ღ    ┃
//        ┃  ┳┛   ┗┳ ┃
//        ┃     ┻    ┃
//        ┗━┓      ┏━┛
//          ┃      ┗━━━┓
//          ┃ 神兽咆哮!  ┣┓
//          ┃         ┏┛
//          ┗┓┓┏━━━┳┓┏┛
//           ┃┫┫   ┃┫┫
//           ┗┻┛   ┗┻┛

package DB

import (
	"courseware/util/config"
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	"net/url"
	"time"
)

var DB *gorm.DB

func InitMySqlClient() {
	username := config.Conf.Get("mysql", "username") // mysql用户名
	port := config.Conf.Get("mysql", "port")         // 端口
	password := config.Conf.Get("mysql", "password") // 密码
	host := config.Conf.Get("mysql", "path")         // 地址
	dbName := config.Conf.Get("mysql", "db_name")    // 数据库名

	dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&loc=%s&parseTime=true",
		username,
		password,
		host,
		port,
		dbName,
		url.QueryEscape("Asia/Shanghai")) // 字符串替换

	fmt.Printf("dsn:%s\n", dsn)

	DB2, err := gorm.Open("mysql", dsn)

	if err != nil {
		panic(err)
	}
	DB2.SingularTable(true)

	DB2.DB().SetMaxOpenConns(100)
	DB2.DB().SetMaxIdleConns(20)
	DB2.DB().SetConnMaxLifetime(time.Minute)
	if config.Conf.Get("server", "debug") == "true" {
		DB2 = DB2.Debug()
	}
	DB = DB2
}
